package org.pb.org.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.pb.basic.domain.BaseDomain;

import java.util.List;

/**
 * 部门表对应的实体类
 * @author 10844
 * @Data lombok的注解，自动生成getter、setter、toString、无参构造、equals、hashCode方法
 * @AllArgsConstructor 给lombok管理的实体类添加一个全参构造方法，因为单独声明全参构造，隐式的无参构造将会被覆盖
 * @NoArgsConstructor 如果声明了全参构造或者其他构造方法，那么需要在添加该注解，为实体类加上无参构造
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department extends BaseDomain {

    /**
     * 部门描述
     */
    private String sn;

    /**
     * 部门名
     */
    private String name;

    /**
     * 目录路径
     */
    private String dirPath;

    /**
     * 部门状态
     */
    private Integer state;

    /**
     * 部门管理者id
     */
    private Long manager_id;

    /**
     * 上级部门id
     */
    private Long parent_id;

    /**
     * 部门经理
     */
    private Employee manager;

    /**
     * 上级部门
     */
    private Department parent_department;

    /**
     * 该部门的所有下级部门
     */
    private List<Department> children;

}
